/*
 * Piso.h
 *
 */

#ifndef PISO_H_
#define PISO_H_

#include <signal.h>
#include <stdlib.h>
#include <list>

#include "../Configuracion/Constantes.h"
#include "../Seniales/SignalHandler.h"
#include "../Configuracion/Utils.h"
#include "../Mensajes/Cola.h"
#include "../Logger/Log.h"

using namespace std;

class Piso : public EventHandler {

private:

	int nroPiso;
	int cantidadPisos;
	bool realizarLlamadas;
	int totalPersonas;
	Cola<Persona> colaAscensor;
	Cola<Llamada> colaControlador;

	Persona construirPersona();
	void realizarLlamada(const Persona persona);
	int calcularPisoDestino();

public:

	Piso(int nroPiso, int cantidadPisos );
	virtual ~Piso();
	int inicializar();
	void generarLlamadas();
	int handleSignal ( int signum );

};

#endif /* PISO_H_ */

